Traditionally, the data needed to be processed by an interleaver and a de-interleaver can be buffered in a Synchronous Dynamic random access memory (SDRM). Usually, the bit width of SDRM is 16 bit. If the data to be transferred is not integral multiple of 16 bits, the storage resources of SDRM obviously will be wasted. Therefore, an interleaver and a corresponding de-interleaver are expected to be invented to improve the throughput and utilization rate of SDRM.